/**
 * @author：小小游 - allen
 * @description：对请求结果统一封装处理
 */
module.exports = {
    /**
     * 生成随机字符串 
     */
    createNonceStr() {
        return Math.random().toString(36).substr(2, 15);
    },
    /**
     * 获取当前的时间戳
     */
    createTimestamp() {
        return parseInt(new Date().getTime() / 1000) + '';
    },
    /**
     * 排序并拼接key1=val1&key2=val2&key3=val3
     */
    raw(args) {
        // 获取args对象的键值数组
        let keys = Object.keys(args);

        // 对所有待签名参数按照字段名的ASCII码从小带大排序（字典序）
        keys = keys.sort();

        // 定义一个空newArgs
        let newArgs = {};

        // 所有参数名均为小写字符，按照排序重新生成一个对象
        keys.forEach(key => {
            newArgs[key.toLowerCase()] = args[key];
        });

        let str = '';

        // 循环新对象，拼接为字符串
        for (let k in newArgs) {
            str += '&' + k + '=' + newArgs[k];
        } 

        // 把第一个字符截取掉，比如生成的类似是&a=1&b=2&c=3  将第一个&去掉
        str = str.substr(1);

        // 最终得到的字符串：a=1&b=2&c=3
        return str;
    },
    handleResponse(err, response, body) {
        if (!err && response.statusCode == '200') {
            let data = JSON.parse(body);
            
            if (data && !data.errcode) {
                return this.handleSucc(data);
            } else {
                return this.handleFail(data.errmsg, data.errcode);
            }
        } else {
            return this.handleFail(err, 10009);
        }
    },
    handleSucc(data = '') {
        return {
            code: 0,
            msg: '',
            responseData: data
        };
    },
    handleFail(msg = '', code = 10001) {
        return {
            code,
            msg,
            data: ''
        }; 
    }
};